#include <iostream>
#include <stack>
#include <sstream>

using namespace std;
/**
 * 两个任务：
 * 完成后缀表达式求值
 * 完成中缀表达式转后缀表达式
 * 标注TODO的是需要完成接口，其他函数为辅助函数，可选择使用，也可以新增自己的函数使用
 * 注意：计算的表达式默认只支持加减乘除 ==> + - * /
 */

// 检查是否是操作符
bool isOperator(char c) {
    return c == '+' || c == '-' || c == '*' || c == '/';
}

// 执行运算
int applyOperator(int operand1, int operand2, char op) {
    switch (op) {
        case '+':
            return operand1 + operand2;
        case '-':
            return operand1 - operand2;
        case '*':
            return operand1 * operand2;
        case '/':
            return operand1 / operand2;
        default:
            return 0;
    }
}

/**
 * TODO: 后缀表达式求值
 * 给函数传入一个后缀表达式，计算出结果
 * @param expr 一个后缀表达式字符串
 * @return 计算的结果
 */
int evaluatePostfix(const string &expr) {
    return -1;
}


/**
 * 获取运算符的优先级
 * @param op
 * @return
 */
int getPriority(char op) {
    if (op == '+' || op == '-') return 1;
    if (op == '*' || op == '/') return 2;
    return 0;
}

/**
 * TODO: 中缀转后缀表达式
 * 将一个中缀表达式传入函数，返回一个后缀表达式
 * @param expr
 * @return
 */
string infixToPostfix(const string &expr) {
    return nullptr;
}

